home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / brutil.arc / COLOR.ASM < prev    next >
Assembly Source File  |  1987-08-21  |  2KB  |  118 lines

  1. tITLE     Color Sets screen color like BASIC COLOR statement
  2.          ;W. A. Scrivens     July, 1985
  3.      ;Bruce Noblick      January, 1987
  4.  
  5. CSEG    SEGMENT
  6.     ASSUME    CS:CSEG,DS:CSEG,ES:CSEG
  7.     ORG    100H
  8. COLOR:
  9.     MOV    AH,CS:80H
  10.     OR    AH,AH
  11.      JNZ     FOREGND
  12.     MOV    DX,OFFSET TEXT
  13.     MOV    AH,9
  14.     INT    21H
  15.     RET
  16. FOREGND: MOV    SI,81H
  17.     CALL    GETVAL
  18.     JC    NOMORE
  19.     CMP    DX,32
  20.     CMP    DX,32
  21.     JNC    BADCOL
  22.     MOV    DH,DL
  23.     AND    DH,10H
  24.     AND    DL,0FH
  25.     MOV    CL,3
  26.     ROL    DH,CL
  27.     OR    DL,DH
  28.     MOV    FGCOL,DL
  29.     CALL    GETVAL
  30.     JC    NOMORE
  31.     CMP    DX,8
  32.     JNC    BADCOL
  33.     MOV    CL,4        ;put in high order nibble
  34.     ROL    DL,CL
  35.     OR    DL,FGCOL    ;form argument for INT 10H
  36.     MOV    FGCOL,DL
  37.     CALL    GETVAL
  38.     JC    NOMORE
  39.     CMP    DX,16
  40.     JNC    BADCOL
  41.     MOV    BOCOL,DL
  42.     JMP    SHORT NOMORE
  43. BADCOL: MOV    DX,OFFSET COLMSG
  44.     MOV    AH,9
  45.     INT    21H
  46.     RET
  47. NOMORE: MOV    AH,15
  48.     INT    10H
  49.     MOV    AH,3
  50.     INT    10H
  51.     MOV    CH,DH
  52.     MOV    CL,0
  53.     MOV    BH,FGCOL
  54.     MOV    AX,600H     ;scroll up full window
  55.     MOV    DX,184FH    ;lower right @ 24,79
  56.      INT     10H
  57. BORDER: MOV    AL,BOCOL    ;get border color
  58.     MOV    DX,3D9H     ;console output
  59.      OUT     DX,AL
  60.     RET
  61.  
  62. GETVAL: SUB    DX,DX
  63.     SUB    AH,AH
  64. GV1:    LODSB
  65.     CMP    AL,13
  66.     STC
  67.     JZ    GVPX
  68.     CMP    AL,' '
  69.     JZ    GV1
  70. GV2:    SUB    AL,'0'
  71.     CMP    AL,10
  72.     JNC    GVEX
  73.     MOV    CX,DX
  74.     ADD    DX,DX
  75.     ADD    DX,DX
  76.     ADD    DX,CX
  77.     ADD    DX,DX
  78.     ADD    DX,AX
  79.     LODSB
  80.     CMP    AL,13
  81.     JZ    GVPX
  82.     CMP    AL,' '
  83.     JNZ    GV2
  84. GVX:    RET
  85. GVPX:    PUSHF
  86.     DEC    SI
  87.     POPF
  88.     RET
  89. GVEX:    CLC
  90.     MOV    DX,-1
  91.     RET
  92. COLMSG    DB    'Bad parameter$'
  93. FGCOL    DB    0
  94. BOCOL    DB    0
  95.  
  96. CR    EQU     0DH
  97. LF    EQU     0AH
  98. TEXT:    DB     CR,LF
  99.     DB    'Syntax: COLOR fg[ bg[ bo]]',CR,LF,LF
  100.     DB    'Where:  fg (Foreground) (0-31)',CR,LF
  101.     DB    '        bg (Background) (0-7)',CR,LF
  102.     DB    '        bo (Border)     (0-15)',CR,LF,LF
  103.     DB    'Color Definitions:',CR,LF,LF
  104.     DB    '    0  8 16 24   Black',CR,LF
  105.     DB    '    1  9 17 25   Blue',CR,LF
  106.     DB    '    2 10 18 26   Green',CR,LF
  107.     DB    '    3 11 19 27   Cyan',CR,LF
  108.     DB    '    4 12 20 28   Red',CR,LF
  109.     DB    '    5 13 21 29   Magenta',CR,LF
  110.     DB    '    6 14 22 30   Yellow',CR,LF
  111.     DB    '    7 15 23 31   White',CR,LF,LF
  112.     DB    '    8-15   are high intensity colors',CR,LF
  113.     DB    '    16-23  are blinking colors',CR,LF
  114.     DB    '    24-31  are high intensity blinking colors'
  115.     DB    CR,LF,'$'
  116. CSEG    ENDS
  117.     END    COLOR
  118.  16-23  are blinking colors